<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// - 所有的实例对象都有`__proto__`属性, 它指向的就是原型对象
	// {
	// 	function Box(){
	//
	// 	}
	// 	const obj = new Box();
	// 	const obj2 = new Box();
	// 	console.log(obj.__proto__ === Box.prototype);// true
	// 	console.log(obj2.__proto__ === Box.prototype);// true
	// 	console.log(obj.__proto__ === obj2.__proto__);
	// }
	
	// - 这样通过`__proto__`属性就形成了一个链的结构---->原型链
	// {
	// 	function Box(){
	//
	// 	}
	// 	const obj = new Box()
	// 	console.log(obj.__proto__ === Box.prototype);
	// 	console.log(Box.prototype.__proto__ === Object.prototype);
	// 	console.log(Object.prototype.__proto__);
	// 	console.log(obj.__proto__.__proto__.__proto__);// null
	// }
	
	// - 当查找对象内部的属性/方法时,` js`引擎自动沿着这个原型链查找
	// {
	// 	Object.prototype.userName = "wangwu";
	// 	function Box(){
	// 		// this.userName = "zhangsan";
	// 	}
	// 	Box.prototype.userName = "lisi";
	// 	const obj = new Box();
	// 	console.log(obj.userName);
	// }
	
	// - 当给对象属性赋值时不会使用原型链, 而只是在当前对象中进行操作
	// {
	// 	function Box(){
	//
	// 	}
	// 	Box.prototype.age = 10;
	// 	const obj = new Box();
	// 	// 为实例对象增加属性age,值为100
	// 	obj.age = 100;
	// 	console.log(obj.age);// 100
	// 	console.log(obj.__proto__.age);// 10
	// }
</script>
</html>